Sync from upstream
authorJonathan Blandford <jrb@gnome.org>
Thu, 11 Mar 2004 03:48:26 +0000 (03:48 +0000)
committerJonathan Blandford <jrb@src.gnome.org>
Thu, 11 Mar 2004 03:48:26 +0000 (03:48 +0000)
Wed Mar 10 22:48:15 2004  Jonathan Blandford  <jrb@gnome.org>

        * Sync from upstream

gtk/xdgmime/ChangeLog
gtk/xdgmime/xdgmime.c
gtk/xdgmime/xdgmime.h
gtk/xdgmime/xdgmimeint.c
gtk/xdgmime/xdgmimemagic.c

index 09fa08d5f242919f1a561a392de7d945e8dc048c..6ad86545183eb73ae9e5b35d742f54bb4cde796b 100644 (file)
@@ -1,3 +1,7 @@
+Wed Mar 10 22:48:15 2004  Jonathan Blandford  <jrb@gnome.org>
+
+       * Sync from upstream
+
 Sun Feb  8 19:05:16 2004  Manish Singh  <yosh@gimp.org>
 
        * xdgmimeint.h: declare _xdg_utf8_skip as extern to prevent multiple
index e8734fb6cd5e30786819aaa017a9119cccfc59a7..b9d0199c64ff5a5f52be8cf33ddb019350c5d07f 100644 (file)
@@ -25,7 +25,6 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include <config.h>
 #include "xdgmime.h"
 #include "xdgmimeint.h"
 #include "xdgmimeglob.h"
@@ -251,3 +250,11 @@ xdg_mime_shutdown (void)
       initted = 0;
     }
 }
+
+int
+xdg_mime_get_max_buffer_extents (void)
+{
+  xdg_mime_init ();
+  
+  return _xdg_mime_magic_get_buffer_extents (global_magic);
+}
index f67b7b17e434c74252cd67e6984213705656075a..e079f06557006321bbd9e866cc49e2f787665b4a 100644 (file)
@@ -35,9 +35,6 @@
 extern "C" {
 #endif /* __cplusplus */
 
-extern const char *xdg_mime_type_unknown;
-#define XDG_MIME_TYPE_UNKNOWN xdg_mime_type_unknown
-
 #ifdef XDG_PREFIX
 #define XDG_ENTRY(func) _XDG_ENTRY2(XDG_PREFIX,func)
 #define _XDG_ENTRY2(prefix,func) _XDG_ENTRY3(prefix,func)
@@ -50,16 +47,22 @@ extern const char *xdg_mime_type_unknown;
 #define xdg_mime_get_mime_type_for_file       XDG_ENTRY(get_mime_type_for_file)
 #define xdg_mime_get_mime_type_from_file_name XDG_ENTRY(get_mime_type_from_file_name)
 #define xdg_mime_is_valid_mime_type           XDG_ENTRY(is_valid_mime_type)
+#define xdg_mime_get_max_buffer_extents       XDG_ENTRY(get_max_buffer_extents)
 #define xdg_mime_type_unknown                 XDG_ENTRY(type_unknown)
 #endif
 
+extern const char *xdg_mime_type_unknown;
+#define XDG_MIME_TYPE_UNKNOWN xdg_mime_type_unknown
+
 const char *xdg_mime_get_mime_type_for_data       (const void *data,
                                                   size_t      len);
 const char *xdg_mime_get_mime_type_for_file       (const char *file_name);
 const char *xdg_mime_get_mime_type_from_file_name (const char *file_name);
 int         xdg_mime_is_valid_mime_type           (const char *mime_type);
+int         xdg_mime_get_max_buffer_extents       (void);
 void        xdg_mime_shutdown                     (void);
 
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index 1bfc512d421ff8a60aa2a26768b9a9f2555e6f39..acbbdfba29258c3ec2f5355fef38721004362577 100644 (file)
@@ -25,7 +25,6 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include <config.h>
 #include "xdgmimeint.h"
 #include <ctype.h>
 #include <string.h>
@@ -38,7 +37,7 @@
 #define        TRUE    (!FALSE)
 #endif
 
-const unsigned char _xdg_utf8_skip_data[256] = {
+static const unsigned char _xdg_utf8_skip_data[256] = {
   1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
   1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
   1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
index bd2a4176a5c7db702e23858bfc2371c82c68467d..436ef30bf6121518ed62fbc37783d8f9f76cb3c2 100644 (file)
@@ -25,7 +25,6 @@
  * Boston, MA 02111-1307, USA.
  */
 
-#include <config.h>
 #include <assert.h>
 #include "xdgmimemagic.h"
 #include "xdgmimeint.h"
@@ -210,7 +209,7 @@ _xdg_mime_magic_read_a_number (FILE *magic_file,
          *end_of_file = TRUE;
          break;
        }
-      if (! isdigit ((char) c))
+      if (! isdigit (c))
        {
          ungetc (c, magic_file);
          break;
@@ -560,12 +559,12 @@ _xdg_mime_magic_matchlet_compare_level (XdgMimeMagicMatchlet *matchlet,
                                        size_t                len,
                                        int                   indent)
 {
-  while (matchlet != NULL && matchlet->indent == indent)
+  while ((matchlet != NULL) && (matchlet->indent == indent))
     {
       if (_xdg_mime_magic_matchlet_compare_to_data (matchlet, data, len))
        {
-         if (matchlet->next == NULL ||
-             matchlet->next->indent <= indent)
+         if ((matchlet->next == NULL) ||
+             (matchlet->next->indent <= indent))
            return TRUE;
 
          if (_xdg_mime_magic_matchlet_compare_level (matchlet->next,
@@ -687,6 +686,31 @@ _xdg_mime_update_mime_magic_extents (XdgMimeMagic *mime_magic)
   mime_magic->max_extent = max_extent;
 }
 
+static XdgMimeMagicMatchlet *
+_xdg_mime_magic_matchlet_mirror (XdgMimeMagicMatchlet *matchlets)
+{
+  XdgMimeMagicMatchlet *new_list;
+  XdgMimeMagicMatchlet *tmp;
+  
+  if ((matchlets == NULL) || (matchlets->next == NULL)) 
+    return matchlets;
+
+  new_list = NULL;
+  tmp = matchlets;
+  while (tmp != NULL) 
+    {
+      XdgMimeMagicMatchlet *matchlet;
+
+      matchlet = tmp;
+      tmp = tmp->next;
+      matchlet->next = new_list;
+      new_list = matchlet;
+    }
+
+  return new_list;
+  
+}
+
 static void
 _xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic,
                                 FILE         *magic_file)
@@ -708,8 +732,11 @@ _xdg_mime_magic_read_magic_file (XdgMimeMagic *mime_magic,
          break;
        case XDG_MIME_MAGIC_MAGIC:
          state = _xdg_mime_magic_parse_magic_line (magic_file, match);
-         if (state == XDG_MIME_MAGIC_SECTION)
-           _xdg_mime_magic_insert_match (mime_magic, match);
+         if (state == XDG_MIME_MAGIC_SECTION) 
+           {
+             match->matchlet = _xdg_mime_magic_matchlet_mirror (match->matchlet);
+             _xdg_mime_magic_insert_match (mime_magic, match);
+           }
          else if (state == XDG_MIME_MAGIC_EOF || state == XDG_MIME_MAGIC_ERROR)
            _xdg_mime_magic_match_free (match);
          break;